/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package caintra.Sapra.Pantalla.Empresa;

import caintra.Sapra.Internacional.DBManager;
import caintra.Sapra.Model.Calendariofacturacionpracticantes;
import caintra.Sapra.Model.Empresa;
import java.util.List;
import org.sapra.dao.Aseguradora;
import org.sapra.dao.Banco;
import org.sapra.dao.Esquemapagopracticante;
import org.sapra.dao.GpoEmpresas;

/**
 *
 * @author luiz
 */
public class EmpresaQuery {
    
    
    String sql="";
    public List<Empresa> getEmpresas(){
        List<Empresa> lista_empresa;
        sql="SELECT * FROM empresa ORDER BY razon_empresa ASC";
        try {
            lista_empresa=DBManager.getQuery(Empresa.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista_empresa;
    }
    
    public List<Banco> getBancos(){
        List<Banco> lista_empresa;
        sql="SELECT * FROM banco";
        try {
            lista_empresa=DBManager.getQuery(Banco.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista_empresa;
    }
    
    public List<GpoEmpresas> getGpoEmpresas(){
        List<GpoEmpresas> lista_empresa;
        sql="SELECT c.*,gc.nombre AS nombreCorporativo "
                + " FROM corporativo c "
                + " INNER JOIN grupocorporativo gc "
                + " ON c.fk_grupoCorporativoId=gc.grupoCorporativoId "
                + " ORDER BY c.nombre ASC";
        try {
            lista_empresa=DBManager.getQuery(GpoEmpresas.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista_empresa;
    }
    
    public List<Esquemapagopracticante> getEsquema_pago(){
        List<Esquemapagopracticante> lista_empresa;
        sql="SELECT * FROM esquemapagopracticante ";
        try {
            lista_empresa=DBManager.getQuery(Esquemapagopracticante.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista_empresa;
    }
    
    public List<Aseguradora> getAseguradora(){
        List<Aseguradora> lista_empresa;
        sql="SELECT * FROM aseguradora WHERE aseguradoraId=2 ";
        try {
            lista_empresa=DBManager.getQuery(Aseguradora.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista_empresa;
    }

    public int insert(Empresa emp){
        int resp=0;
        sql="";
        try {
            sql = "INSERT INTO empresa(num_cliente,rfc,razon_empresa,";
            sql += "razon_factura,practicantes_seguro,porcentaje_comision,ahorro_acumulado,";
            sql += "fk_bancoId,fk_direccionId,fk_corporativoId,";
            sql += "fk_esquemaPagoPracticanteId,fechaTerminoAbierta,tieneEsquemaAhorro,";
            sql += "fechaSuspension,suspendida,numeroSocio,notificacionesPracticantes,";
            sql += "tieneAcceso) ";

            // Valores
            sql += " VALUES(";
            sql += "'"+emp.getNumeroSocio()+"',";
            sql += "'"+emp.getRfc()+"',";
            sql += "'"+emp.getRazon_empresa()+"',";
            sql += "'"+emp.getRazon_factura()+"',";
            sql += emp.getPracticantes_seguro() + ",";
            sql += emp.getPorcentaje_comision() + ",";
            sql += "0,"; 
            sql += emp.getFk_bancoId() + ",";
            sql += emp.getFk_direccionId() + ",";
            sql += emp.getFk_corporativoId() + ",";
            sql += emp.getFk_esquemaPagoPracticanteId()+","; 
            sql += emp.getFechaTerminoAbierta() + ",";
            sql += "FALSE,";
            sql += "NULL,";
            sql += emp.getSuspendida() + ",";
            sql += "'" + emp.getNumeroSocio() + "',";
            sql += emp.getNotificacionesPracticantes() + ",";
            sql += "TRUE)";
            resp = DBManager.insert(sql);
        } catch (Exception e) {
            return resp;
        }
        return resp;
    
    }
    public int update(Empresa emp){
        int resp=0;
        try {
            sql = "UPDATE empresa ";
            sql += "SET num_cliente =" + "'" + emp.getNumeroSocio() + "'";
            sql += ",rfc =" + "'" + emp.getRfc() + "'";
            sql += ",razon_empresa =" + "'" + emp.getRazon_empresa() + "'";
            sql += ",razon_factura =" + "'" + emp.getRazon_factura() + "'";
            sql += ",practicantes_seguro =" + emp.getPracticantes_seguro();
            sql += ",porcentaje_comision =" + emp.getPorcentaje_comision();
            sql += ",fk_bancoId=" + emp.getFk_bancoId();
            sql += ",fk_corporativoId = " + emp.getFk_corporativoId();
            sql += ",fk_esquemaPagoPracticanteId =" +emp.getFk_esquemaPagoPracticanteId();
            sql += ",fechaTerminoAbierta = " + emp.getFechaTerminoAbierta();
            sql += ",suspendida =" + emp.getSuspendida();
            sql += ",numeroSocio =" + "'" + emp.getNumeroSocio() + "'";
            sql += ",notificacionesPracticantes =" + emp.getNotificacionesPracticantes();
            sql += " WHERE empresaid = " + emp.getEmpresaId();
            DBManager.Update(sql);
            resp = emp.getEmpresaId();
        } catch (Exception e) {
            return -1;
        }
        return resp;
    }

    
    public List<Calendariofacturacionpracticantes> getCalendarios(int empresaId){
        List<Calendariofacturacionpracticantes> lista;
        try {
            sql="SELECT cf.* "
                    + " FROM calendariofacturacionpracticantes cf "
                    + " WHERE NOT EXISTS "
                    + " (SELECT periodoId FROM prefactura_caintra pf "
                    + " WHERE pf.periodoId=cf.calendarioFacturacionPracticantesId) "
                    + " AND cf.fk_empresaId="+empresaId;
            lista=DBManager.getQuery(Calendariofacturacionpracticantes.class,sql);
        } catch (Exception e) {
            return null;
        }
        return lista;
    
    }
    public void elimina_fecha(Calendariofacturacionpracticantes cf){
        sql="";
        try {
            sql="DELETE FROM calendariofacturacionpracticantes WHERE  calendarioFacturacionPracticantesId="+cf.getCalendarioFacturacionPracticantesId();
            DBManager.Update(sql);
        } catch (Exception e) {
        }
    
    }
}
